package array.removeelement;

/**
 * @ClassName RemoveZero
 * @Description TODO
 * @Author lenovo
 * @Date 2023-02-10 14:27
 * @Version 1.0
 * @Comment Magic. Do not touch.
 * If this comment is removed. the program will blow up
 */
public class RemoveZero {

    /**
     * 283.移动零
     * 题目链接：283.移动零
     * 题目：
     * <p>
     * 给定一个数组 nums，编写一个函数将所有 0 移动到数组的末尾，同时保持非零元素的相对顺序。
     * <p>
     * 请注意 ，必须在不复制数组的情况下原地对数组进行操作。
     * <p>
     * 示例 1：
     * <p>
     * 输入: nums = [0,1,0,3,12]
     * 输出: [1,3,12,0,0]
     * <p>
     * 示例 2：
     * <p>
     * 输入: nums = [0]
     * 输出: [0]
     */

    public void moveZeroes(int[] nums) {

        int n = 0;
        //先把不为零的移动到前面
        for (int i = 0; i < nums.length; i++) {
            if (nums[i] != 0) {
                nums[n++] = nums[i];
            }
        }
        //然后补齐后面的零
        for (int i = n; i < nums.length; i++) {
            nums[i] = 0;
        }
    }

    public static void main(String args[]) {
        RemoveZero removeZero = new RemoveZero();
        int[] array = new int[]{0, 1, 0, 3, 12};
        removeZero.moveZeroes(array);

        for (int i = 0; i < array.length; i++) {
            System.out.println(array[i]);
        }
    }
}